#!/usr/bin/env python 
# -*- coding:utf-8 -*-
"""
@Time:2021/11/19 3:34 下午"
@Author:lydia_liu"
@File:house.py
@function:
"""

class House:

    #属性：类变量是在类之中，在方法之外
    door = ""
    floor = ""
    window = ""
    __key = True

    #构造函数，类实例化的时候自动执行的方法
    def __init__(self,floor1,door):
        print("这是一个构造函数")
        #在构造函数中定义实例变量
        self.table = "餐桌"
        self.kitchen = "cook"
        self.floor = floor1
        self.door = door

    #方法
    def sleep(self):

        #局部变量，在类的方法中
        bed = "席梦思"
        #在实例变量，类中，方法中，以self.开头
        print(self.kitchen)
        print(f"在房子中可以躺在{bed}睡觉")

    def cook(self):
        #在其他方法中调用实例变量
        print(self.table)
        print("在房子中做饭")

    @classmethod
    def class_method(cls):
        print("这是一个类方法！")

    def open_door(self):
        #调用类变量也需要前面加上self
        if self.__key == True:
            print("开门成功")
        else:
            print("没有钥匙，无法开门")

    #定义私有的方法
    def __open_save(self):
        print("打开保险箱")
    def get_save(self):
        self.__open_save()


if __name__ == '__main__':
    #实例化：变量 = 类名
    #北欧风格的房子
    north_house = House(floor1="black",door="white")
    #中式风格的房子
    china_house = House(floor1="yellow",door="red")

    print(north_house.door)

    china_house.open_door()
    china_house.get_save()

    # House.sleep() #类名不能直接调用方法，只能通过实例调用方法
    House.class_method()

    #类外部不能调用私有属性
    # print(House.__key)
    # print(north_house.__key)
    #定义北欧风房的属性
    # north_house.floor = "black"
    # north_house.door = "white"

    #定义中式风房的属性
    # china_house.floor = "yellow"
    # china_house.door = "red"

    # north_house.sleep()
    # north_house.cook()
